// 获取checkbox数量
var getCkbCount = function(el, selected) {
    if(el) {
        if(selected) {
            return $(el).find('tbody input[type="checkbox"].ckb-selecte:checked').length;
        } else {
            return $(el).find('tbody input[type="checkbox"].ckb-selecte').length;
        }
    } else {
        return false;
    }
};

// 获取checkbox值
var getCkbVals = function(el, selected) {
    if(el) {
        var elCkbs = null;
        if(selected) {
            elCkbs = $(el).find('tbody input[type="checkbox"].ckb-selecte:checked');
        } else {
            elCkbs = $(el).find('tbody input[type="checkbox"].ckb-selecte');
        }
        var ids = [];
        for(var i = 0, len = elCkbs.length; i < len; i++) {
            var item = elCkbs[i];
            ids.push($(item).attr('data-id'));
        }
        return ids.join(',');
    } else {
        return false;
    }
};

// 重设checkbox
var resetCkb = function(el, selected) {
    if('undefined' == typeof el) {
        el = $('.table');
    }
    $(el).find('tbody tr:not(.special,.empty) input:checkbox.ckb-selecte').each(function() {
        if(selected) {
            $(this).prop('checked', 'checked').closest('tr').addClass('selected');
        } else {
            $(this).prop('checked', null).closest('tr').removeClass('selected');
        }
    });
};

$(document).ready(function() {

    // table事件
    $('.table').each(function() {
        var elTable = $(this);

        elTable.find('thead input[type="checkbox"].ckb-selecte-all').prop('checked', null).bind('change', function() {
            resetCkb(elTable, $(this).is(':checked'));
        }).trigger('change');

        elTable.find('tbody tr:not(.group) input[type="checkbox"].ckb-selecte').each(function() {
            if($(this).is(':checked')) {
                $(this).closest('tr').addClass('selected');
            } else {
                $(this).closest('tr').removeClass('selected');
            }
        }).bind('change', function() {
            var pid = $(this).attr('data-id');

            if($(this).is(':checked')) {
                $(this).closest('tr').addClass('selected');
            } else {
                $(this).closest('tr').removeClass('selected');
            }

            var subTable = $(this).closest('tbody').find('tr[pid="' + pid + '"]').find('.table');

            resetCkb(subTable, $(this).is(':checked'));

            var selectedCount = getCkbCount(elTable, true);
            var allCount = getCkbCount(elTable, false);

            if(selectedCount === allCount) {
                elTable.find('thead input[type="checkbox"].ckb-selecte-all').prop('checked', 'checked');
                elTable.closest('tr.group').prev().addClass('selected').find('input[type="checkbox"].ckb-selecte').prop('checked', 'checked');
            } else {
                elTable.find('thead input[type="checkbox"].ckb-selecte-all').prop('checked', null);
                elTable.closest('tr.group').prev().removeClass('selected').find('input[type="checkbox"].ckb-selecte').prop('checked', null);
            }
        });

        // 隔行变色
        elTable.find('tbody:not(.noeven) tr:not(.special,.empty):even').addClass('odd');
        elTable.find('tbody:not(.noeven) tr:not(.special,.empty):odd').addClass('even');

    });

    var showTdLoadmask = function(el) {
        el.append('<div class="td-loadmask" title="操作进行中"><span class="img"></span><span class="bg"></span></div>');
    };

    var closeTdLoadmask = function(el) {
        el.find('.td-loadmask').remove();
    };

    // 快速操作
    $('.link-fast-opt').bind('click', function() {
        var el = $(this);

        var url = el.attr('data-url');
        var id = el.attr('data-id');
        var field = el.attr('data-field');
        var val = el.attr('data-val');

        var params = {};

        params['act'] = 'fast';
        params['field'] = field;
        params['id'] = id;
        params['val'] = val;

        showTdLoadmask(el.closest('td'));

        $.ajax({
            url: url,
            data: params,
            dataType: 'json',
            type: 'POST',
            success: function(data) {
                closeTdLoadmask(el.closest('td'));
                if(1 == data['status']) {
                    el.parent().hide().siblings().show();
                }
            },
            error: function() {
                alert('服务器错误');
                closeTdLoadmask(el.closest('td'));
            }
        });

        return false;
    });

    $('.upload-field').each(function() {
        var els = $(this).find('.upload-item');

        els.find('input:file').bind('change', function() {
            $(this).closest('.upload-item').find('input:text').val($(this).val());
            return false;
        });

        els.find('.btn-upload').bind('click', function() {
            $(this).closest('.upload-item').find('input:file').trigger('click');
            return false;
        });

        els.hover(function() {
            $(this).closest('.upload-item').find('.btn-upload').toggleClass('hover');
        });

        $(this).find('.btn-clear-img').bind('click', function() {
            $(this).closest('dd').find('.image-field').remove();
            $(this).closest('dd').find('.upload-item .upload-field input:text').val('').removeAttr('value');
            $(this).closest('dd').find('.upload-item input:hidden').val('').removeAttr('value');;
            $(this).closest('dd').find('.upload-item input:file').val('');
            return false;
        });
    });
    // 分页显示行数
    $('.sel-pagging-rows').each(function() {
        $(this).bind('change', function() {
            var url = $(this).find('option:selected').attr('data-url');
            if(url) {
                window.location.replace(url);
            }
            return false;
        });
    });

    // 批量操作
    $('.btn-operate-batch').bind('click', function() {
        var msgCount = $(this).attr('data-msg-count') || '请选择要操作的行';
        var msgConfirm = $(this).attr('data-msg-confirm') || '确认要操作选中的行？';

        var elTable = $(this).closest('.box').find('.box-content .table');
        var action = $(this).attr('data-url');

        if(0 == getCkbCount(elTable, true)) {
            alert(msgCount);
            return false;
        }

        if(!confirm(msgConfirm)) {
            return false;
        }

        if('' == action) {
            alert('URL错误！');
            return false;
        }

        var vals = getCkbVals(elTable, true).split(',');

        var tmp_form = [];

        tmp_form.push('<form style="display:none;" action="' + action + '" method="POST">');
        for(var i = 0, len = vals.length; i < len; i++) {
            tmp_form.push('<input type="hidden" name="ids[]" value="' + vals[i] + '" />');
        }
        tmp_form.push('</form>');

        $(tmp_form.join('')).appendTo($('body')).submit();

        return false;
    });


    // box标题
    $('.box .box-title .title').bind('click', function() {
        $(this).closest('.box').children('.box-content').stop(true, true).slideToggle(200);
    });

    // tab标签事件
    $('.tab-switch .tabs-title ul li a').bind('click', function() {
        var elLi = $(this).closest('li');
        if(!elLi.hasClass('current')) {
            elLi.addClass('current').siblings('.current').removeClass('current');
            $(this).closest('.tab-switch').find('#' + $(this).attr('data-id') + '-content').show().siblings('.tab-content-inner').hide();
        }
        return false;
    });

    // 链接事件
    $('.wrap-page .link-newtab').bind('click', function() {
        var el = $(this);
        if('undefined' == typeof parent.window.iframeJudge) {
            window.location.replace(el.attr('href'));
        } else {
            parent.window.iframeJudge({
                elem: el, id: el.attr('data-id'), href: el.attr('href'), title: el.attr('title')
            });
        }
        return false;
    });

    // 关闭Tab页面
    $('.wrap-page .btn-close-page').bind('click', function() {
        if(parent.window.closeTabPage) {
            parent.window.closeTabPage($(this).closest('.wrap-page').attr('data-id'));
        }
        return false;
    });

    // 通用表单提交
    $('.wrap-page .page-buttons .btn-submit').bind('click', function() {
        var elThis = $(this);
        var elForm = elThis.closest('form');
        var url = '';

        if('undefined' == elForm) {
            return false;
        }

        if('undefined' == typeof $(this).attr('data-url')) {
            url = $(this).closest('form').attr('action');
        } else {
            url = $(this).attr('data-url');
        }

        if(!url) {
            return false;
        }

        elForm.ajaxSubmit({
            url: url, type: 'post', dataType: 'json', beforeSubmit: function(arr, form) {
                if('function' === typeof form.valid) {
                    return form.valid();
                }
            }, success: function(data) {
                var elTips;
                var elContent;
                if('success' == data['state']) {
                    elContent = elThis.closest('.page-buttons');
                    if(0 < elContent.find('.tips-info').length) {
                        elContent.find('.tips-info').remove();
                    }
                    elTips = $('<div class="fl-l tips-info"><span class="tips-success">' + data['info'] + '</span></div>').hide();
                    elContent.append(elTips);
                    elTips.fadeIn('slow').delay(1000).fadeOut(function() {
                        if(data['url']) {
                            if(window.parent.art) {
                                window.parent.location.replace(data['url']);
                            } else {
                                window.location.replace(data['url']);
                            }
                        } else {
                            if(window.parent.art) {
                                window.parent.location.replace(window.parent.location.href);
                            } else {
                                window.location.replace(window.location.href);
                            }
                        }
                    });
                } else if('fail' == data['state']) {
                    elTips = $('<div class="fl-l tips-info"><span class="tips-error">' + data['info'] + '</span></div>');
                    elContent = elThis.closest('.page-buttons');
                    if(0 < elContent.find('.tips-info').length) {
                        elContent.find('.tips-info').remove();
                    }
                    elContent.append(elTips).fadeIn(500);
                }
            }
        });

        return false;
    });


    $('.layer-del').click(function(){
        var url = $(this).attr('data-url')
        layer.confirm('确定删除选中项？',function() {
            $.post(url, {}, function (res) {
                if (res.status) {
                    layer.msg(res.msg, {icon: 1, time: 2000}, function () {
                        window.location.reload();
                    });
                } else {
                    layer.msg(res.msg, {icon: 2, time: 2000})
                }
            }, 'json')
        })
    })


    // 弹出网页层
    $('.layer_confirm').click(function(){
        var msg = $(this).attr('data-msg');
        var url = $(this).attr('data-url');
        layer.confirm(msg,{icon:3},function(index){
            $.getJSON(url,function(data){
                if(!data.status)
                {
                    layer.msg(data.msg,{icon:2,time:2000});
                } else {
                    layer.msg(data.msg,{icon:1,time:2000},function(){
                        window.location.reload();
                    });
                }
            })
            layer.close(index);
        });
    })



    //弹出层的绑定事件
    $('.layer-dialog').click(function(){
        //弹出层之前的绑定事件
        var beforefun    = $(this).attr('data-check-before');
        if(typeof(beforefun) != 'undefined') {
            if ($.isFunction(eval('window.'+beforefun))) {
                if (!eval(beforefun+'()')) return false;
            }
        }

        var url    = $(this).attr('data-url');
        var height = $(this).attr('data-height');
        var width  = $(this).attr('data-width');
        var title  = $(this).attr('data-title');
        var btnconf   = $(this).attr('data-btn');
        var btn = new Array();
        if(typeof(btnconf) == 'undefined'){
            btn = ['保存','取消'];
        } else {
            btn = btnconf.split(',');
        }
        layer.open({
            type: 2,
            title: title,
            offset: '110px',
            shadeClose: false,  //点击遮罩以外关闭
            shade: 0.3,  //遮罩
            area: [width, height],
            btn: btn,
            skin: 'layui-layer-rim', //加上边框
            content: url, //iframe的url
            yes:function(index,layero){
                var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象，执行iframe页的方法：
                iframeWin.submitEvent();
            }
        });
    });


    //切换
    $('.J_tabs li').click(function(){
        $(this).siblings('li').removeClass('current');
        $(this).addClass('current');
        var index = $(this).index();
        $('.content_list').hide();
        $('.content_list').eq(index).show();
    });


    //选择分类
    $(document).on('change','.J_cate_select',function(){
        var cate_list = $('#json_cate_list').val();
        var obj = $(this);
        var pid = $(this).val();
        $('#cate_id').val(pid);
        if(cate_list) {
            cate_list = $.parseJSON(cate_list);
        }  else {
            return false;
        }
        if(pid == 'null' || ((typeof(cate_list[pid]) == 'undefined')))
        {
            obj.nextAll('.J_cate_select').remove();
            return false;
        }

        if(typeof(cate_list[pid]) != 'undefined')
        {
            var res = cate_list[pid];
            var str ='';
            var str_start = '<select class="mr10 J_cate_select">';
            var default_str = '<option value="null" data-pid="null">--请选择--</option>'
            $.each(res,function(index,item)
            {
                str += '<option value="'+item.id+'" data-pid="'+item.pid+'">'+item.cate_name+'</option>'
            });
            var str_end  = '</select>'
            var flag = obj.next('.J_cate_select').hasClass('J_cate_select')
            if(str)
            {
                if(!flag) obj.after(str_start + default_str+ str +str_end)
                if(flag)
                {
                    obj.nextAll('.J_cate_select').remove();
                    obj.after(str_start+default_str+str+str_end);
                }
            } else {
                if(flag) obj.nextAll('.J_cate_select').remove();
            }
        }
    });


    //列表图片icon 鼠标划过显示
    $('.attachment_icon').hover(function()
    {
        var src = $(this).attr('file-rel')
        var html = '<div class="attachment_icon_"><img src="'+src+'" width="150" height="150"></div>'
        $(this).append(html);
    }, function(){
        $('.attachment_icon_').remove();
    });

    //批量删除
    $('.btn-delete-batch').click(function(){
        var num  = $('.J_checkitem:checked').length;
        if(!num)
        {
            layer.msg('请至少选择一个操作项');
            return false;
        }
        var ids = [];
        $.each($('.J_checkitem:checked'), function(a,b){
            ids.push($(this).val());
        })
        var tips = $(this).attr('tips');
        if(typeof (tips) == 'undefined') tips = '确定删除所选项?'
        var url = $(this).attr('data-url')
        layer.confirm(tips, function(i){
            $.post(url,{params:ids}, function(res){
                if(res.status)
                {
                    layer.msg(res.msg,{time:2000}, function(){
                        window.location.reload();
                    })
                }
            },'json')
        })

    })

});



var reg_mobile = /^0{0,1}(13[0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/;
var reg_email  = /^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$/;
//正则数据格式验证
function verifyformat($reg,$verifydata)
{
    return ($reg.test($verifydata)) ? true : false
}

//文章分类选择下拉初始化(add)
function cate_select_init()
{
    //分类选择初始化
    var url = $('.J_cate_select').attr('data-uri');
    var pid = $('.J_cate_select').attr('data-pid');

    $.post(url,{pid:pid},function(res){
        if(res)
        {
            var str = '<option value="null" data-pid="null">--请选择--</option>';
            var select = ''
            $.each(res,function(index,item)
            {
                str += '<option value="'+item.id+'" '+select+' data-pid="'+item.pid+'">'+item.cate_name+'</option>'
            });
            $('.J_cate_select').html(str);
        }
    },'json')
}

//初始化分类并选中(edit)
function cate_select_default(cate_source, cate_path)
{
    if(!cate_source || !cate_path)
    {
        cate_select_init();
        return false;
    }
    if(cate_path)
    {
        cate_path = cate_path.split('|');
    }
    if(cate_source) {
        cate_source = $.parseJSON(cate_source);
    }  else {
        return false;
    }
    var option = '<option value="null" data-pid="null">--请选择--</option>';
    $.each(cate_source[0],function(index, item){
        if(cate_path.indexOf(item.id) != -1)
        {
            var select = 'selected = "selected"';
        } else {
            var select = '';
        }
        option += '<option value="'+item.id+'" '+select+'>'+ item.cate_name+'</option>'
    })
    $('.J_cate_select').html(option);

    var parent_path = cate_path.concat();
    parent_path.pop();
    $.each(parent_path,function(index,item){
        var obj =  cate_source[item];
        var str = '<select class="J_cate_select mr10">'
        str += '<option value="null" data-pid="null">--请选择--</option>';
        $.each(obj, function(a,b){
            if(cate_path.indexOf(b.id) != -1)
            {
                var select = 'selected = "selected"';
            } else {
                var select = '';
            }
            str += '<option value="'+ b.id+'" '+select+'>'+ b.cate_name+'</option>'
        })
        str += '</select>'
        $('#cate_id').before(str);
    })
}
